#ifndef _OPERACION_CREAR_H_
#define _OPERACION_CREAR_H_

/**********************************************************************
 *	operacionCrear.h
 * 
 *  Descripcion: 
 *  Clase que define la operacion del Tipo Crear
 *********************************************************************/

#include <string>
#include "operacion.h"
#include "debugger.h"
#include "logger.h"
#include "tipo_struct.h"
#include "parser.h"
#include "archivosFactory.h"
#include "excep_parser_sintaxis.h"
#include "excep_sintaxis_estructura_crear.h"
#include "funcProcStructCrear.h"
#include "funcProcAtomCrear.h"
#include "modelo.h"

class OperacionCrear : public Operacion{
	
	protected:
		static std::string NOMBRE_PARAM_CREAR;	
		
		//atributos de la operacion
		ArchivoDatos * archivo;
		std::string formato_archivo;
						
		/*
		 * Constructor
		 */
		OperacionCrear(ArchivoDatos * a, std::string &f);
				
		/*
		 * Pasa a un tipo struct el formato del archivo
		 */ 
		TipoStruct * get_formato_archivo();
		
	public:
		
		static Operacion * construir(std::string param) throw (ExcepSintaxisParser);
		
		~OperacionCrear();
		
		void ejecutar(Modelo *modelo);	

		ArchivoDatos * get_archivo();	
		
		std::string get_formato();
};

#endif

